iT邦幫忙

2018 iT 邦幫忙鐵人賽
DAY 7
0
Modern Web

PHP laravel的邂逅系列 第 7

DAY07-Route基本介紹 PART 2

  • 分享至 

  • xImage
  •  

DAY07-Route基本介紹 PART 2

今天也來講講route的其他部分

命名路由

如果覺得路由名稱太長,你也可以自行命名路由的名稱,這樣方便重導向或是指定特定的路由,而我們需要做的就是加上name這個方法就可以了,那我就來實際操作看看。

下面程式碼中看到了兩個路由,分別用數字1跟2來區分。
首先先進到1號路由,第一個參數中,{id}這部分是可以抓到來自url上面的參數,而為什麼又多一個問號呢?問號代表的是這個參數可以是空值,不一定要給id,而後面閉包的參數也有新增一些東西,因為參數可能為空,所以就需要有預設值,這邊就設定是id=null,預設不一定是null,這樣也可以使用is_null來判斷是否有傳進來id。

再來看看2號路由,我們把/student/profile縮短成了profile,這樣1號路由在重導向就只要輸入profile就可以了,對於一些很長的網址馬上縮短了不少,也可以增加程式碼的維護性。

//1號路由
Route::get('/users/{id?}',function($id=null){
    if(!is_null($id)){
        //如果有id就重導向至/student/profile
        return redirect()->route('profile');
    }else{
        return '無使用者資料';
    }
});


//2號路由
Route::get('/student/profile',function(){
    return '已查到使用者資料';
})->name('profile');

路由組

可以在路由之前加入共同的middleware(中間件)。
為什麼要這樣做呢?如果你是有註冊的會員,可以先在middleware中寫一些驗證會員的邏輯,這樣就不用每一個路由前面都需要加上一樣的驗證程式碼。

那要怎麼實作呢?Route::middleware裡面的參數為陣列,可以同時放多個middleware,在後面需要加上group的方法,在後面就可以放進要驗證的路由。



Route::middleware(['first', 'second'])->group(function () {
    Route::get('/', function () {
        // 使用 first 和 second 中間件
    });

    Route::get('user/profile', function () {
        // 使用 first 和 second 中間件
    });
});

路由模型綁定

這邊先讓大家有個印象,以下的程式碼還不能執行唷,還少了資料庫跟model的部分。

模型(model)就是可以對資料庫操作的orm,在後續章節會討論,這邊先簡單帶過。

下面看到了function中加上了App\User,model在新增時會在App的目錄下面,這邊就是指User的model,後面是變數名稱,而變數名稱預設一般都會以model名稱小寫來當變數,laravel會自動對應到該model裡面。

Route::get('api/users/{user}', function (App\User $user) {
    return $user->email;
});

第二種寫法
//把model寫在檔案最上面,使用use來載入User的model
//在function中就只要寫User就可以了,是不是方便很多
use App\User

Route::get('api/users/{user}', function (User $user) {
    return $user;
});

今天路由的部分已經告一段落,明天會講到controller的使用方法。


上一篇
DAY06-Route基本介紹
下一篇
DAY08-Controller介紹PART 1
系列文
PHP laravel的邂逅30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言